package com.sg.dto.biz.app.common;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc PlanningExportDetailDto
 * @使用场景
 */
@Data
public class PlanningExportDetailDto extends BaseDto implements Serializable {

    /**
     * 指标ID
     */
    @ApiModelProperty("指标ID")
    private String objectiveId;

    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 评价模板名称
     */
    @ApiModelProperty("评价模板名称")
    private String evaluationTempName;

    /**
     * 一级目标分类名称
     */
    @ApiModelProperty("一级目标分类名称")
    private String rootTargetCategoryName;

    /**
     * 末级目标分类名称
     */
    @ApiModelProperty("末级目标分类名称")
    private String lastTargetCategoryName;

    /**
     * 指标简称
     */
    @ApiModelProperty("指标简称")
    private String objectiveShortName;

    /**
     * 虚拟组织下部门ID
     */
    @ApiModelProperty("虚拟组织下部门ID")
    private String deptId;

    /**
     * 负责人就职记录ID
     */
    @ApiModelProperty("负责人就职记录ID")
    private String personLiableInductionRecordId;

    /**
     * 主管就职记录ID
     */
    @ApiModelProperty("主管就职记录ID")
    private String directorInductionRecordId;
    /**
     * 部门简称
     */
    @ApiModelProperty("责任部门简称")
    private String deptShortName;

    /**
     * 负责人姓名
     */
    @ApiModelProperty("负责人姓名")
    private String personLiableIdCardName;

    /**
     * 主管姓名
     */
    @ApiModelProperty("主管姓名")
    private String directorIdCardName;

    /**
     * 展示目标值
     */
    @ApiModelProperty("展示目标值")
    private Double showTargetValue;

    /**
     * 冗余单位
     */
    @ApiModelProperty("目标值单位")
    private String unit;

    /**
     * 实际值（数值）
     */
    @ApiModelProperty("实际值（数值）")
    private Double actualValue;

    /**
     * 实际值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:1111百分率 PORTION:份 %:%
     */
    @ApiModelProperty("实际值单位")
    private String actualValueUnit;

    /**
     * 进度值（数值）
     */
    @ApiModelProperty("进度值（数值）")
    private Double progressValue;

    /**
     * 进度值单位
     */
    @ApiModelProperty("进度值单位")
    private String progressValueUnit;
    /**
     * 关联目标内容ID
     */
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        PlanningExportDetailDto that = (PlanningExportDetailDto) o;
        return objectiveId == that.objectiveId && evaObjTargetCycleId == that.evaObjTargetCycleId && evaluationTempName == that.evaluationTempName && rootTargetCategoryName == that.rootTargetCategoryName && lastTargetCategoryName == that.lastTargetCategoryName && objectiveShortName == that.objectiveShortName && deptId == that.deptId && personLiableInductionRecordId == that.personLiableInductionRecordId && directorInductionRecordId == that.directorInductionRecordId && deptShortName == that.deptShortName && personLiableIdCardName == that.personLiableIdCardName && directorIdCardName == that.directorIdCardName && showTargetValue == that.showTargetValue && unit == that.unit && actualValue == that.actualValue && actualValueUnit == that.actualValueUnit && progressValue == that.progressValue && progressValueUnit == that.progressValueUnit && targetCycleContentId == that.targetCycleContentId;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), objectiveId, evaObjTargetCycleId, evaluationTempName, rootTargetCategoryName, lastTargetCategoryName, objectiveShortName, deptId, personLiableInductionRecordId, directorInductionRecordId, deptShortName, personLiableIdCardName, directorIdCardName, showTargetValue, unit, actualValue, actualValueUnit, progressValue, progressValueUnit, targetCycleContentId);
    }

}
